iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0

不知道大家有沒有注意到我們在第14天時有教大家如何安裝自己的K8s時,我們有特別安裝了三個套件,分別是:Kubectl、Kubeadm、Kubelet。

那問題來了,我們要裝的不是 Kubernetes 嗎?為什麼要裝這三個東西?
其實我們從這三個套件的名字來看的話,就會發現它們跟 Kubernetes 的名字很像,如果我們更深入研究的話,會發現他們三個其實都各司其職,為 K8s 付出一定的心力,而今天我就來跟你們介紹他們三劍客中的一員 -- Kubelet。

什麼是Kubelet?

簡單地來說,kubelet的主要功能就是定時從某個地方獲取節點上 Pod 的期望狀態(運行什麼容器、運行的副本數量、網絡或者存儲如何配置等等),並調用對應的容器平台接口達到這個狀態。

在 cluster 的狀態下,kubelet 會從 master 上讀取信息,但其實kubelet 還可以藉由不同的方式獲取節點的 Pod 信息。目前kubelet 支持三種數據源:

  • 本地文件
  • 通過url 從網絡上某個地址來獲取信息
  • API Server:從kubernetes master node 獲取信息

kubelet目前支援的平台包括:Docker、Rkt,在預設的情況下是使用Docker。

或許有些讀者現在看完以上的介紹後還是一頭霧水,上面那段話再更白話一點就是 kubelet 是幫助 kubernetes 管理 Pod 的角色。

我們都知道 K8s 最基本的管理單位是 Pod,Pod 是 kubernetes 在容器上的一層封裝,由一組運行在同一主機的一個,或者多個容器組成。如果我們將 Docker 的 Container 比喻為是電腦上的一個進程的話,那 Pod 就像是一台完整的主機,裡面包含著多個 Container 並共享資源,例如:網路空間的共享。

除了創建 Pod ,他還會對其進行「健康檢查」,檢驗容器是否正常運行,檢查容器是否健康主要有兩種方式:在容器中執行命令通過 HTTP 訪問預定義的endpoint

若是選擇前者的話,我們可以藉由它所回傳的 exit code 來判斷容器是否正常運作;如果是後者的話,我們可以透過向某個 url 發送HTTP GET的請求,並根據回傳的 response code 來判斷。而如果發現容器運作不正常的話,kubelet 會刪除該容器,並根據容器的重啟策略進行處理,例如:重啟,或者什麼都不做。

總結來說, kubelet 很像是 Kubernetes 的 Pod 管家,會將 Pod的狀態、資訊都傳回 master ,並定時檢查容器的狀態,在容器運作不正常時,做相對應的處理,確保系統的運作正常。

不曉得今天藉由這種方式跟大家介紹 kubelet 你們是否都大概了解它的作用是什麼,如果大家有興趣想要更深一步的探討的話,可以參考一下 kubelet 的官方文件,這邊有關於操作 kubelet 的所有指令,其他的功用。

那明天我會繼續介紹剩下的成員,就請各位敬請期待了,我們明天見!掰掰!


上一篇
Day15 建立各個 resource 前你應該知道的事
下一篇
Day17 K8s 操作大師--Kubectl
系列文
被容器束縛住的小宇宙30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言